import Vue from "vue";
import VueRouter from "vue-router";
import vueRouter from 'vue-router'
import routes from './routes'

Vue.use(vueRouter)

// 将vueRouter.prototype的push和replace存储一份
const originPush = VueRouter.prototype.push
const originReplace = VueRouter.prototype.replace

//修改vue原型对明象上的push方法 用来增强push 解决编程式路由导航重复跳转的问题
VueRouter.prototype.push = function(location,okCallback,errCallback){
  if(okCallback===undefined && errCallback === undefined){ 
    //okCallback 没传,okCallback也没传
    originPush.call(this,location).catch(()=>{})
  }else{ // 如果不 是 undefined, 说明okCallback,errCallback传值了
    originPush.call(this,location,okCallback,errCallback)
  }
}

VueRouter.prototype.push = function(location,okCallback,errCallback){
  if(okCallback===undefined && errCallback === undefined){ 
    //okCallback 没传,okCallback也没传
    originReplace.call(this,location).catch(()=>{})
  }else{ // 如果不 是 undefined, 说明okCallback,errCallback传值了
    originReplace.call(this,location,okCallback,errCallback)
  }
}


// 创建并暴露路由器
const router= new vueRouter({
    mode:'history',
    routes,
    scrollBehavior (to, from, savedPosition) { //第三个参数 savedPosition 当且仅当 popstate 导航 (通过浏览器的 前进/后退 按钮触发) 时才可用。
        if (savedPosition) {
          return savedPosition
        } else {
          return { x: 0, y: 0 }  // return 期望滚动到哪个的位置
        }
      }
})
export default router
/*
对于所有路由导航，简单地让页面滚动到顶部。
scrollBehavior (to, from, savedPosition) {
  return { x: 0, y: 0 }  // return 期望滚动到哪个的位置
}

返回 savedPosition，在按下 后退/前进 按钮时，就会像浏览器的原生表现那样：
scrollBehavior (to, from, savedPosition) {
  if (savedPosition) {
    return savedPosition
  } else {
    return { x: 0, y: 0 }
  }
}

*/